// 导入pinia
import { defineStore } from 'pinia'
// 导入 api
import { reqUserInfo, reqPassport } from '@/api/login'
// 导入存取token的方法
import { removeToken } from '@/utils/storage'
// 导入类型
// import type {} from '@/api/login'

// 初始化用户信息
const initUserInfo = () => ({
  id: 0,
  loginName: '',
  nickName: '',
  passwd: '',
  name: '',
  phoneNum: '',
  email: null,
  headImg: '',
  userLevel: '',
  status: 0,
  birthday: null,
  gender: '',
  createTime: '',
  operateTime: '',
  openId: null
})
// 创建实例
export const useUserInfo = defineStore('userInfo', {
  state: () => ({
    userInfo: initUserInfo(),
    name: '', // 用户名
    avatar: '' // 头像
  }),
  actions: {
    // 获取用户信息
    async getuserInfo() {
      try {
        const result = await reqUserInfo()
        console.log(result)
        // 存储
        this.userInfo = result
        this.name = result.name
        this.avatar = 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif'
      } catch (error) {
        // 继续向下抛出错误
        return Promise.reject(error)
      }
    },
    // 退出登录
    async reset() {
      try {
        // 发送请求
        await reqPassport()
        // 删除local中保存的token
        removeToken()
        // 重置基础用户信息结构
        this.userInfo = initUserInfo()
        this.name = ''
      } catch (error) {
        // ElMessage.error('退出登录失败,请重试')
        // 继续往下抛出错误
        return Promise.reject(error)
      }
    }
  }
})
